package code10异常;

/**
 * @author 黄衡熙
 * @version 1.0
 */
public class Test02_捕获异常 {
    public static void main(String[] args) {
        test01();
       // test02();
       // test03();
    }

    public static void test01() {
        try {
            // 可能出现异常的代码
            int i = 1 / 2;


            int[] arr = new int[2];
            System.out.println(arr[2]);

            System.out.println("*************没有遇到异常*************");
        } catch (ArithmeticException e) {
            // 捕获的异常,在catch的参数中表示的是遇到什么异常才会捕获
            System.err.println("执行代码遇到了算术异常");
        } finally {
            // 不管是否存在异常都会执行的代码
            System.out.println("不管是否存在异常,反正我会执行");
        }
        System.out.println("***************方法的末尾***************");
    }

    public static void test02() {
        try {
            // 可能出现异常的代码
            int i = 1 / 2;

            int[] arr = new int[2];
//            System.out.println(arr[1]);

//            int num = Integer.parseInt("a");
            System.out.println("*************没有遇到异常*************");
            // 此时使用return都无法阻止finally的执行
//            return;
            // 如果想要强制阻止finally的执行,只能关机
            // 即:直接终止当前正在运行的JVM
            System.exit(0);
        } catch (ArithmeticException e) {
            // 捕获的异常,在catch的参数中表示的是遇到什么异常才会捕获
            System.err.println("执行代码遇到了算术异常");
        } catch (ArrayIndexOutOfBoundsException e) {
            // 捕获数组下标越界的异常
            System.err.println("执行代码遇到了数组下标越界异常");
        } catch (Exception e) {
            System.err.println("执行代码遇到了其他检查异常");
        } finally {
            // 不管是否存在异常都会执行的代码
            System.out.println("不管是否存在异常,反正我会执行");
        }
        System.out.println("***************方法的末尾***************");

    }

    public static void test03() {
        try {
            // 可能出现异常的代码
            int i = 1 / 2;

            int[] arr = new int[2];
//            System.out.println(arr[2]);

            String s = null;
            System.out.println(s.equals("aa"));

            System.out.println("*************没有遇到异常*************");
        } catch (ArithmeticException | ArrayIndexOutOfBoundsException | NullPointerException e) {
            System.err.println("执行代码遇到了异常,异常为:" + e);
        } catch (Exception e) {
            System.err.println("执行代码遇到了其他检查异常");
        } finally {
            // 不管是否存在异常都会执行的代码
            System.out.println("不管是否存在异常,反正我会执行");
        }
        System.out.println("***************方法的末尾***************");

    }
}
